package com.example.snackbar;

import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

import com.google.android.material.snackbar.Snackbar;

/**
 * @author by liliang on 2020/5/28 12:31 AM
 */
public class SnackBarUtil {

    /**
     * 向snackbar布局中添加view
     *
     * @param snackbar
     * @param layoutId 新添加布局 id
     * @param index    添加的位置
     */
    public static void SnackbarAddView(Snackbar snackbar, int layoutId, int index) {
        //获取snackbar的View(其实就是SnackbarLayout)
        View snackbarview = snackbar.getView();

        //将获取的View转换成SnackbarLayout
        Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbarview;

        //加载布局文件新建View
        View add_view = LayoutInflater.from(snackbarview.getContext()).inflate(layoutId, null);

        //设置新建布局参数
        LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        //设置新建布局在Snackbar内垂直居中显示
        p.gravity = Gravity.CENTER_VERTICAL;
        p.gravity = Gravity.END;

        //将新建布局添加进snackbarLayout相应位置
        snackbarLayout.addView(add_view, index, p);
    }

    /**
     * 为snackbar中指定按钮控件添加点击监听器
     *
     * @param snackbar
     * @param btn_id
     * @param onClickListener
     */
    public static void SetAction(Snackbar snackbar, int btn_id, String action_string, View.OnClickListener onClickListener) {
        //获取Snackbar的view
        View view = snackbar.getView();
        //为添加的按钮设置监听器
        ((Button) view.findViewById(btn_id)).setText(action_string);
        (view.findViewById(btn_id)).setOnClickListener(onClickListener);
    }
}
